我正在尝试解析日期,但出现时区异常答案 |
您所在的位置:网站首页 › linux 时区查看 › 我正在尝试解析日期,但出现时区异常答案 |
tl;博士
ZonedDateTime.parse(
"Thu Feb 25 12:58:28 MST 2016" ,
DateTimeFormatter.ofPattern( "E MMM dd HH:mm:ss z uuuu" , Locale.US )
)
2016-02-25T12:58:28-07:00[美国/丹佛] java.time现代方法使用 java.time 类。对于 Android,请参阅下面的最后一个项目符号。 String input = "Thu Feb 25 12:58:28 MST 2016" ; DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM dd HH:mm:ss z uuuu" , Locale.US ) ; ZonedDateTime zdt = ZonedDateTime.parse( input , f ) ;查看此代码在 IdeOne.com 上实时运行。 (但请注意,该站点上的 JVM 已硬连接到 Locale.US,其他任何内容都将被忽略。) zdt.toString(): 2016-02-25T12:58:28-07:00[美国/丹佛] 您的输入字符串格式很糟糕。如果可能,更改为使用标准的ISO 8601 格式。标准格式实用,易于机器解析,并且易于跨文化的人类阅读。方便的是,这些格式在解析/生成字符串时默认在 java.time 类中使用。 以continent/region 的格式指定proper time zone name,例如America/Montreal、Africa/Casablanca 或Pacific/Auckland。切勿使用 3-4 个字母的缩写,例如 MST 或 EST 或 IST,因为它们不是真正的时区,没有标准化,甚至不是唯一的 (!)。 ZoneId zEdmonton = ZoneId.of( "America/Edmonton" ) ; ZoneId zDenver = ZoneId.of( "America/Denver" ) ; ZoneId zMazatlan = ZoneId.of( "America/Mazatlan" ) ; 关于java.timejava.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。 Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。 要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。 从哪里获得 java.time 类? Java SE 8、Java SE 9 及更高版本 内置。 标准 Java API 的一部分,带有捆绑实现。 Java 9 添加了一些小功能和修复。 Java SE 6 和 Java SE 7 ThreeTen-Backport 中的大部分 java.time 功能都向后移植到 Java 6 和 7。 Android ThreeTenABP 项目专门为 Android 改编了 ThreeTen-Backport(如上所述)。 见How to use ThreeTenABP…。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |